package br.com.caelum.vraptor.controller;

import java.util.List;

import javax.inject.Inject;

import br.com.caelum.vraptor.Controller;
import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.auth_annotations.EmpresaAdmin;
import br.com.caelum.vraptor.auth_annotations.EscolaAdmin;
import br.com.caelum.vraptor.dao.GenericDAO;
import br.com.caelum.vraptor.entidades.Escola;
import br.com.caelum.vraptor.entidades.Perfil;
import br.com.caelum.vraptor.entidades.Usuario;

@Controller
public class EscolaController {

	@Inject
	private Result result;
	
	@Inject
	private GenericDAO<Escola> dao;
	
	@Inject
	private GenericDAO<Usuario> usuarioDAO;
	
	@EmpresaAdmin
	public void add() {
		
	}
	@EmpresaAdmin
	public List<Escola> list() {
		return dao.find();
		
	}
	@EmpresaAdmin
	public Escola edit(int id) {
		return dao.find(id);
	}
	@EmpresaAdmin
	public void save(Escola escola) {
		dao.save(escola);
	List<Escola> escolas = dao.find();
	escola = escolas.get(escolas.size()-1);
		Usuario usuario = new Usuario();
		usuario.setLogin(escola.getNome().toLowerCase() + "_" + escola.getId()); //O login da escola � composto pelo seu nome + underline + seu id. A chamada do m�todo toLowerCase() indica que o login estar� com todas as letras min�sculas.
		usuario.setSenha("123");
		usuario.setPerfil(Perfil.ESCOLA);
		usuario.setAutenticavel(escola);
		usuarioDAO.save(usuario);
		result.redirectTo(this).list();
	}
	@EmpresaAdmin
	public void delete(int id) {
		Escola escola = dao.find(id);
		Usuario usuario = new Usuario();
		usuario.setLogin(escola.getNome() + "_" + escola.getId());
		dao.delete(escola);		
		usuarioDAO.delete(usuario);
		result.redirectTo(this).list();
	}

	
	@EscolaAdmin
	public void alterarsenha() {
		
	}

	@EscolaAdmin
	public void atualizausuario(Usuario usuarioantigo, Usuario usuarionovo) {
		Usuario usuarioSalvo = usuarioDAO.find(usuarioantigo.getLogin());
		
		if (usuarioantigo.getSenha().equals(usuarioSalvo.getSenha())) {
			usuarioSalvo.setSenha(usuarionovo.getSenha());
			usuarioDAO.save(usuarioSalvo);
			result.redirectTo(this).senhaalterada();
		}
		else {
			result.redirectTo(this).alterarsenha();
		}
		
	}

	@EscolaAdmin
	public void senhaalterada() {
		
	}
	
}
